1 /*
2 
3 Boost Software License - Version 1.0 - August 17th, 2003
4 
5 Permission is hereby granted, free of charge, to any person or organization
6 obtaining a copy of the software and accompanying documentation covered by
7 this license (the "Software") to use, reproduce, display, distribute,
8 execute, and transmit the Software, and to prepare derivative works of the
9 Software, and to permit third-parties to whom the Software is furnished to
10 do so, all subject to the following:
11 
12 The copyright notices in the Software and this entire statement, including
13 the above license grant, this restriction and the following disclaimer,
14 must be included in all copies of the Software, in whole or in part, and
15 all derivative works of the Software, unless such copies or derivative
16 works are solely in the form of machine-executable object code generated by
17 a source language processor.
18 
19 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
20 IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
22 SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
23 FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
24 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
25 DEALINGS IN THE SOFTWARE.
26 
27 */
28 
29 module derelict.glib.garray;
30 
31 import derelict.glib.gtypes;
32 import derelict.glib.glibconfig;
33 
34 import core.stdc.config;
35 
36 extern (C):
37 
38 alias _GBytes GBytes;
39 alias _GArray GArray;
40 alias _GByteArray GByteArray;
41 alias _GPtrArray GPtrArray;
42 
43 struct _GArray
44 {
45 	gchar* data;
46 	guint len;
47 }
48 
49 struct _GByteArray
50 {
51 	guint8* data;
52 	guint len;
53 }
54 
55 struct _GPtrArray
56 {
57 	gpointer* pdata;
58 	guint len;
59 }
60 
61 struct _GBytes;
62 
63 version(Derelict_Link_Static)
64 {
65     extern( C ) nothrow 
66     {
67         GArray* g_array_new(gboolean zero_terminated, gboolean clear_, guint element_size);
68         GArray* g_array_sized_new(gboolean zero_terminated, gboolean clear_, guint element_size, guint reserved_size);
69         gchar* g_array_free(GArray* array, gboolean free_segment);
70         GArray* g_array_ref(GArray* array);
71         void g_array_unref(GArray* array);
72         guint g_array_get_element_size(GArray* array);
73         GArray* g_array_append_vals(GArray* array, gconstpointer data, guint len);
74         GArray* g_array_prepend_vals(GArray* array, gconstpointer data, guint len);
75         GArray* g_array_insert_vals(GArray* array, guint index_, gconstpointer data, guint len);
76         GArray* g_array_set_size(GArray* array, guint length);
77         GArray* g_array_remove_index(GArray* array, guint index_);
78         GArray* g_array_remove_index_fast(GArray* array, guint index_);
79         GArray* g_array_remove_range(GArray* array, guint index_, guint length);
80         void g_array_sort(GArray* array, GCompareFunc compare_func);
81         void g_array_sort_with_data(GArray* array, GCompareDataFunc compare_func, gpointer user_data);
82         void g_array_set_clear_func(GArray* array, GDestroyNotify clear_func);
83         GPtrArray* g_ptr_array_new();
84         GPtrArray* g_ptr_array_new_with_free_func(GDestroyNotify element_free_func);
85         GPtrArray* g_ptr_array_sized_new(guint reserved_size);
86         GPtrArray* g_ptr_array_new_full(guint reserved_size, GDestroyNotify element_free_func);
87         gpointer* g_ptr_array_free(GPtrArray* array, gboolean free_seg);
88         GPtrArray* g_ptr_array_ref(GPtrArray* array);
89         void g_ptr_array_unref(GPtrArray* array);
90         void g_ptr_array_set_free_func(GPtrArray* array, GDestroyNotify element_free_func);
91         void g_ptr_array_set_size(GPtrArray* array, gint length);
92         gpointer g_ptr_array_remove_index(GPtrArray* array, guint index_);
93         gpointer g_ptr_array_remove_index_fast(GPtrArray* array, guint index_);
94         gboolean g_ptr_array_remove(GPtrArray* array, gpointer data);
95         gboolean g_ptr_array_remove_fast(GPtrArray* array, gpointer data);
96         void g_ptr_array_remove_range(GPtrArray* array, guint index_, guint length);
97         void g_ptr_array_add(GPtrArray* array, gpointer data);
98         void g_ptr_array_sort(GPtrArray* array, GCompareFunc compare_func);
99         void g_ptr_array_sort_with_data(GPtrArray* array, GCompareDataFunc compare_func, gpointer user_data);
100         void g_ptr_array_foreach(GPtrArray* array, GFunc func, gpointer user_data);
101         GByteArray* g_byte_array_new();
102         GByteArray* g_byte_array_new_take(guint8* data, gsize len);
103         GByteArray* g_byte_array_sized_new(guint reserved_size);
104         guint8* g_byte_array_free(GByteArray* array, gboolean free_segment);
105         GBytes* g_byte_array_free_to_bytes(GByteArray* array);
106         GByteArray* g_byte_array_ref(GByteArray* array);
107         void g_byte_array_unref(GByteArray* array);
108         GByteArray* g_byte_array_append(GByteArray* array, const(guint8)* data, guint len);
109         GByteArray* g_byte_array_prepend(GByteArray* array, const(guint8)* data, guint len);
110         GByteArray* g_byte_array_set_size(GByteArray* array, guint length);
111         GByteArray* g_byte_array_remove_index(GByteArray* array, guint index_);
112         GByteArray* g_byte_array_remove_index_fast(GByteArray* array, guint index_);
113         GByteArray* g_byte_array_remove_range(GByteArray* array, guint index_, guint length);
114         void g_byte_array_sort(GByteArray* array, GCompareFunc compare_func);
115         void g_byte_array_sort_with_data(GByteArray* array, GCompareDataFunc compare_func, gpointer user_data);
116     }
117 }
118 else
119 {
120     extern( C ) nothrow 
121     {
122         alias da_g_array_new = GArray* function(gboolean zero_terminated, gboolean clear_, guint element_size);										
123         alias da_g_array_sized_new = GArray* function(gboolean zero_terminated, gboolean clear_, guint element_size, guint reserved_size);			
124         alias da_g_array_free = gchar* function(GArray* array, gboolean free_segment);																
125         alias da_g_array_ref = GArray* function(GArray* array);																						
126         alias da_g_array_unref = void function(GArray* array);																						
127         alias da_g_array_get_element_size = guint function(GArray* array);																			
128         alias da_g_array_append_vals = GArray* function(GArray* array, gconstpointer data, guint len);												
129         alias da_g_array_prepend_vals = GArray* function(GArray* array, gconstpointer data, guint len);												
130         alias da_g_array_insert_vals = GArray* function(GArray* array, guint index_, gconstpointer data, guint len);								
131         alias da_g_array_set_size = GArray* function(GArray* array, guint length);																	
132         alias da_g_array_remove_index = GArray* function(GArray* array, guint index_);																
133         alias da_g_array_remove_index_fast = GArray* function(GArray* array, guint index_);															
134         alias da_g_array_remove_range = GArray* function(GArray* array, guint index_, guint length);												
135         alias da_g_array_sort = void function(GArray* array, GCompareFunc compare_func);															
136         alias da_g_array_sort_with_data = void function(GArray* array, GCompareDataFunc compare_func, gpointer user_data);							
137         alias da_g_array_set_clear_func = void function(GArray* array, GDestroyNotify clear_func);													
138         alias da_g_ptr_array_new = GPtrArray* function();																							
139         alias da_g_ptr_array_new_with_free_func = GPtrArray* function(GDestroyNotify element_free_func);											
140         alias da_g_ptr_array_sized_new = GPtrArray* function(guint reserved_size);																	
141         alias da_g_ptr_array_new_full = GPtrArray* function(guint reserved_size, GDestroyNotify element_free_func);									
142         alias da_g_ptr_array_free = gpointer* function(GPtrArray* array, gboolean free_seg);														
143         alias da_g_ptr_array_ref = GPtrArray* function(GPtrArray* array);																			
144         alias da_g_ptr_array_unref = void function(GPtrArray* array);																				
145         alias da_g_ptr_array_set_free_func = void function(GPtrArray* array, GDestroyNotify element_free_func);										
146         alias da_g_ptr_array_set_size = void function(GPtrArray* array, gint length);																
147         alias da_g_ptr_array_remove_index = gpointer function(GPtrArray* array, guint index_);														
148         alias da_g_ptr_array_remove_index_fast = gpointer function(GPtrArray* array, guint index_);													
149         alias da_g_ptr_array_remove = gboolean function(GPtrArray* array, gpointer data);															
150         alias da_g_ptr_array_remove_fast = gboolean function(GPtrArray* array, gpointer data);														
151         alias da_g_ptr_array_remove_range = void function(GPtrArray* array, guint index_, guint length);											
152         alias da_g_ptr_array_add = void function(GPtrArray* array, gpointer data);																	
153         alias da_g_ptr_array_sort = void function(GPtrArray* array, GCompareFunc compare_func);														
154         alias da_g_ptr_array_sort_with_data = void function(GPtrArray* array, GCompareDataFunc compare_func, gpointer user_data);					
155         alias da_g_ptr_array_foreach = void function(GPtrArray* array, GFunc func, gpointer user_data);												
156         alias da_g_byte_array_new = GByteArray* function();																							
157         alias da_g_byte_array_new_take = GByteArray* function(guint8* data, gsize len);																
158         alias da_g_byte_array_sized_new = GByteArray* function(guint reserved_size);																
159         alias da_g_byte_array_free = guint8* function(GByteArray* array, gboolean free_segment);													
160         alias da_g_byte_array_free_to_bytes = GBytes* function(GByteArray* array);																	
161         alias da_g_byte_array_ref = GByteArray* function(GByteArray* array);																		
162         alias da_g_byte_array_unref = void function(GByteArray* array);																				
163         alias da_g_byte_array_append = GByteArray* function(GByteArray* array, const(guint8)* data, guint len);										
164         alias da_g_byte_array_prepend = GByteArray* function(GByteArray* array, const(guint8)* data, guint len);									
165         alias da_g_byte_array_set_size = GByteArray* function(GByteArray* array, guint length);														
166         alias da_g_byte_array_remove_index = GByteArray* function(GByteArray* array, guint index_);													
167         alias da_g_byte_array_remove_index_fast = GByteArray* function(GByteArray* array, guint index_);											
168         alias da_g_byte_array_remove_range = GByteArray* function(GByteArray* array, guint index_, guint length);									
169         alias da_g_byte_array_sort = void function(GByteArray* array, GCompareFunc compare_func);													
170         alias da_g_byte_array_sort_with_data = void function(GByteArray* array, GCompareDataFunc compare_func, gpointer user_data);					
171     }
172 
173     __gshared 
174     {
175         da_g_array_new g_array_new; 
176         da_g_array_sized_new g_array_sized_new; 
177         da_g_array_free g_array_free; 
178         da_g_array_ref g_array_ref; 
179         da_g_array_unref g_array_unref; 
180         da_g_array_get_element_size g_array_get_element_size; 
181         da_g_array_append_vals g_array_append_vals; 
182         da_g_array_prepend_vals g_array_prepend_vals; 
183         da_g_array_insert_vals g_array_insert_vals; 
184         da_g_array_set_size g_array_set_size; 
185         da_g_array_remove_index g_array_remove_index; 
186         da_g_array_remove_index_fast g_array_remove_index_fast; 
187         da_g_array_remove_range g_array_remove_range; 
188         da_g_array_sort g_array_sort; 
189         da_g_array_sort_with_data g_array_sort_with_data; 
190         da_g_array_set_clear_func g_array_set_clear_func; 
191         da_g_ptr_array_new g_ptr_array_new; 
192         da_g_ptr_array_new_with_free_func g_ptr_array_new_with_free_func; 
193         da_g_ptr_array_sized_new g_ptr_array_sized_new; 
194         da_g_ptr_array_new_full g_ptr_array_new_full; 
195         da_g_ptr_array_free g_ptr_array_free; 
196         da_g_ptr_array_ref g_ptr_array_ref; 
197         da_g_ptr_array_unref g_ptr_array_unref; 
198         da_g_ptr_array_set_free_func g_ptr_array_set_free_func; 
199         da_g_ptr_array_set_size g_ptr_array_set_size; 
200         da_g_ptr_array_remove_index g_ptr_array_remove_index; 
201         da_g_ptr_array_remove_index_fast g_ptr_array_remove_index_fast; 
202         da_g_ptr_array_remove g_ptr_array_remove; 
203         da_g_ptr_array_remove_fast g_ptr_array_remove_fast; 
204         da_g_ptr_array_remove_range g_ptr_array_remove_range; 
205         da_g_ptr_array_add g_ptr_array_add; 
206         da_g_ptr_array_sort g_ptr_array_sort; 
207         da_g_ptr_array_sort_with_data g_ptr_array_sort_with_data; 
208         da_g_ptr_array_foreach g_ptr_array_foreach; 
209         da_g_byte_array_new g_byte_array_new; 
210         da_g_byte_array_new_take g_byte_array_new_take; 
211         da_g_byte_array_sized_new g_byte_array_sized_new; 
212         da_g_byte_array_free g_byte_array_free; 
213         da_g_byte_array_free_to_bytes g_byte_array_free_to_bytes; 
214         da_g_byte_array_ref g_byte_array_ref; 
215         da_g_byte_array_unref g_byte_array_unref; 
216         da_g_byte_array_append g_byte_array_append; 
217         da_g_byte_array_prepend g_byte_array_prepend; 
218         da_g_byte_array_set_size g_byte_array_set_size; 
219         da_g_byte_array_remove_index g_byte_array_remove_index; 
220         da_g_byte_array_remove_index_fast g_byte_array_remove_index_fast; 
221         da_g_byte_array_remove_range g_byte_array_remove_range; 
222         da_g_byte_array_sort g_byte_array_sort; 
223         da_g_byte_array_sort_with_data g_byte_array_sort_with_data; 
224     }
225 }
226 
227